# Remote DNS Cache Poisoning Attack Lab

# Pre-Experiment

我们需要三台虚拟机, 一台作为 DNS 服务器, 一台为攻击者, 一台为受害者.

  • DNS 服务器: 10.0.2.16
  • 攻击者 00 机: 10.0.2.14
  • 受害者 01 机: 10.0.2.13

# 配置 DNS 服务器

# 配置 BIND9

BIND9 是一种 DNS 服务器软件, 虚拟机里已经装好了 BIND9. BIND9 的配置文件在 /etc/bind/named.conf. 这个文件中包含了其他配置文件的路径:

 



include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
1
2
3

我们需要修改的是 named.conf.options 这个文件, 在这个文件中添加缓存内容文件的路径. 如果不指定, 默认缓存内容文件的路径为: /var/cache/bind/named_dump.db.



 



options {
    directory "/var/cache/bind";
    dump-file "/var/cache/bind/dump.db";
    ...
}
1
2
3
4
5

执行下方的两个指令:

sudo rndc dumpdb -cache     # 转存缓存到指定文件
sudo rndc flush             # 清空缓存文件
1
2

# 关闭 DNSSEC

DNSSEC 应该是一种防止 DNS 服务器遭受 spoofing attcks 的防御措施.

还是在上文的 named.conf.options 文件, 找到并注释: dnssec-validation auto;, 添加 dnssec-enable no;

这两个子操作的具体作用

?

# 固定端口

在上文的 named.conf.options 文件中的 options 中添加 query-source port 33333; 设置所有 DNS 查询的 source prot 为 33333.

# 移除 example.com

# 重启 DNS 服务器.

有修改就重启.

sudo service bind9 restart
1

# 检查启动是否成功

可以检查一下 /var/log/syslog 有没有提示服务 bind9 启动失败.

# 配置用户虚拟机

# 配置

设置用户虚拟机的本地 DNS 服务器为我们之前设置的那个. /etc/resolv.conf 文件可以做到这个. 修改一下 nameserver 10.0.2.16.

但是 DHCP 会覆盖这个文件, 所以, 修改文件 /etc/resolvconf/resolv.conf.d/head, 添加 nameserver 10.0.2.16. 完事生效配置文件:

sudo resolvconf -u
1

# 测试

使用 dig 指令, 可以看到: SERVER 中我们可以看到 DNS 服务器的 IP (图中 .15 修正为 .16).

dig 命令是常用的域名查询工具,可以用来测试域名系统工作是否正常。

# T1 Remote Cache Poisoning

Kaminsky attack

# T1.1 Spoofing DNS request

伪装 DNS 请求.

脚本 udp.c

# T1.2 Spoofing DNS Replies

伪装 DNS 响应.

# T1.3 The Kaminsky Attack

# T2 Result Verification

# Use a Real Domain Name

# Use A Fake Domain Name

Last Updated: 2/18/2020, 2:10:29 PM